package com.knife.oauth.security.customer.filter;

import com.knife.oauth.security.customer.entity.RequestContext;

/**
 * 自定义过滤器，提供过滤功能和执行顺序功能
 *
 * @author： 76875
 * @date： 2022/4/14 星期四 14:41
 * @description：
 * @modifiedBy：
 * @version: 1.0
 */
public interface KnifeHelperFilter {
    /**
     * filter顺序，越小越先执行
     *
     * @return filter顺序
     */
    int filterOrder();

    /**
     * 是否执行
     *
     * @param request 请求上下文
     * @return true则执行，false不执行
     */
    boolean shouldFilter(RequestContext request);

    /**
     * 执行方法
     *
     * @param request 请求上下文
     * @return true则继续执行后面的filter，false不再执行
     */
    boolean run(RequestContext request);
}
